const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const https = require('https');

// 获取早报数据的函数
function fetchZaobao() {
    return new Promise((resolve, reject) => {
        const postData = JSON.stringify({
            token: 'ycd0krwbhl5v2w6iafblj94y5vzqdj',
            format: 'json'
        });

        const options = {
            hostname: 'v3.alapi.cn',
            port: 443,
            path: '/api/zaobao',
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Content-Length': Buffer.byteLength(postData)
            },
            // 忽略 SSL 证书验证（仅用于开发环境）
            rejectUnauthorized: false
        };

        const req = https.request(options, (res) => {
            let data = '';

            res.on('data', (chunk) => {
                data += chunk;
            });

            res.on('end', () => {
                try {
                    const result = JSON.parse(data);
                    resolve(result);
                } catch (e) {
                    reject(e);
                }
            });
        });

        req.on('error', (e) => {
            reject(e);
        });

        req.write(postData);
        req.end();
    });
}

// 创建窗口函数
function createWindow() {
    const mainWindow = new BrowserWindow({
        width: 1000, // 窗口宽度
        height: 700, // 窗口高度
        webPreferences: {
            preload: path.join(__dirname, 'preload.js'), // 关联预加载脚本
            contextIsolation: true, // 开启上下文隔离（安全最佳实践）
            nodeIntegration: false // 禁用 Node 集成（默认禁用，增强安全性）
        }
    });

    // 加载应用界面（本地 HTML 文件）
    mainWindow.loadFile('index.html');

    // 可选：打开开发者工具（调试用）
    // mainWindow.webContents.openDevTools();
}

// 处理来自渲染进程的早报请求
ipcMain.handle('fetch-zaobao', async () => {
    try {
        const result = await fetchZaobao();
        return result;
    } catch (error) {
        console.error('获取早报失败:', error);
        return { code: -1, msg: error.message };
    }
});

// 应用就绪后创建窗口
app.whenReady().then(() => {
    createWindow();

    // Mac 特有：应用关闭所有窗口后，点击 Dock 图标重新创建窗口
    app.on('activate', () => {
        if (BrowserWindow.getAllWindows().length === 0) createWindow();
    });
});

// 关闭所有窗口后退出应用（Windows/Linux），Mac 会保留应用在 Dock
app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') app.quit();
});